/**
 *	@file	radio_drama.c
 *	@brief	ラジオ　バラエティチャンネル　連続ラジオドラマデータ生成
 *	@author	Miyuki Iwasawa
 *	@date	09.04.17
 */

#include "common.h"
#include "system/procsys.h"
#include "system/arc_util.h"
#include "system/arc_tool.h"
#include "system/bmp_list.h"
#include "system/bmp_menu.h"
#include "system/pm_str.h"
#include "system/msgdata.h"
#include "system/fontproc.h"
#include "system/snd_tool.h"
#include "system/buflen.h"
#include "system/wordset.h"
#include "system/pm_rtc.h"
#include "application/app_tool.h"
#include "msgdata/msg.naix"

#include "savedata/zukanwork.h"
#include "radio_prog.h"
#include "msgdata/msg_pg_radio.h"
#include "msgdata/msg_radio_p_drama.h"

typedef struct{
 int heapID;
 u16 seq;
 u16 msg_id;
}RADIO_DRAMA_WORK;

static void drama_ResInit(PM_RADIO_MAN* man);
static void drama_ResRelease(PM_RADIO_MAN* man);

#define DRAMA_MSG_MAX	(22)

/**
 *	@brief	ラジオ　れんぞくラジオドラマ　初期化
 */
int RadioDrama_Init(PM_RADIO_MAN* man)
{
	RADIO_DRAMA_WORK* wk = NULL;

	wk = sys_AllocMemory(man->heapID,sizeof(RADIO_DRAMA_WORK));
	MI_CpuClear8(wk,sizeof(RADIO_DRAMA_WORK));

	man->ch_wk = (void*)wk;

	drama_ResInit(man);

	//再生開始
	Snd_BgmStop(Snd_NowBgmNoGet(),0);
	RADIO_PLAY(RADIO_BGM_VARIETY);
	return 0;
}

/**
 *	@brief	ラジオ　れんぞくラジオドラマ 解放
 */
int RadioDrama_End(PM_RADIO_MAN* man)
{
	if(man->ch_wk == NULL){
		return 0;
	}
	drama_ResRelease(man);

	MI_CpuClear8(man->ch_wk,sizeof(RADIO_DRAMA_WORK));
	sys_FreeMemoryEz(man->ch_wk);
	man->ch_wk = NULL;

	return 0;
}

/**
 *	@brief	ラジオ　れんぞくラジオドラマ 再生メイン
 */
int RadioDrama_Play(PM_RADIO_MAN* man)
{
	RADIO_DRAMA_WORK* wk = (RADIO_DRAMA_WORK*)man->ch_wk;

	switch(wk->seq){
	case 0:	//タイトルコール
		RadioSub_SentencePlay(man,m_drama_00_01);
		wk->seq++;
		break;
	case 1:
		if(!RadioSub_SentencePlayWait(man)){
			break;
		}
		//ドラマ本編再生
		RadioSub_SentencePlay(man,wk->msg_id+m_drama_02_01);
		wk->seq++;
		break;
	case 2:
		if(!RadioSub_SentencePlayWait(man)){
			break;
		}
		wk->seq++;
		break;
	case 3:
		if(!RadioSub_MsgWaitScroll(man)){
			break;
		}
		//アイキャッチ
		RadioSub_EyeCatchPlay(man,m_drama_00_02);
		wk->seq++;
		break;
	case 4:
		if(!RadioSub_EyeCatchPlayWait(man)){
			break;
		}
		//CMリクエスト
		man->cm_req_f = TRUE;
		return 1;
	}
	return 0;
}

/*
 *	@brief	れんぞくラジオドラマ用 必要なデータを初期化する
 */
static void drama_ResInit(PM_RADIO_MAN* man)
{
	RADIO_DRAMA_WORK* wk = (RADIO_DRAMA_WORK*)man->ch_wk;

	man->msg_prog = MSGMAN_Create(MSGMAN_TYPE_NORMAL,ARC_MSG,NARC_msg_radio_p_drama_dat,man->heapID);

	//番組タイトルとDJ名を通知
	MSGMAN_GetString(man->msg_prog,m_drama_title,man->str_title);
	MSGMAN_GetString(man->msg_prog,m_drama_dj,man->str_dj);

	wk->msg_id = gf_rand()%DRAMA_MSG_MAX;

	if(wk->msg_id == man->pass_work){	//連続して同じ値にならないようにずらす
		wk->msg_id = (wk->msg_id+1)%DRAMA_MSG_MAX;
	}
	man->pass_work = wk->msg_id;
}

/**
 *	@brief	れんぞくラジオドラマ用　リソース解放
 */
static void drama_ResRelease(PM_RADIO_MAN* man)
{
	RADIO_DRAMA_WORK* wk = (RADIO_DRAMA_WORK*)man->ch_wk;

	MSGMAN_Delete(man->msg_prog);
}
